Move the block-phy and block-file handling into a common
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 7 Oct 2005 12:13:58 +0000 (13:13 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 7 Oct 2005 12:13:58 +0000 (13:13 +0100)
block script that gets called by the hotplug agent.

Signed-off-by: Jeremy Katz <katzj@redhat.com>
tools/examples/Makefile
tools/examples/block [new file with mode: 0644]
tools/examples/block-file [deleted file]
tools/examples/block-phy [deleted file]
tools/examples/xen-backend.agent

index 0f30fc021fe98a73c2f2a12fa0456580e37c9e34..17d93453a17e720caf2c65cbbbcba81213fd2bdb 100644 (file)
@@ -22,8 +22,7 @@ XEN_SCRIPT_DIR = /etc/xen/scripts
 XEN_SCRIPTS = network-bridge vif-bridge
 XEN_SCRIPTS += network-route vif-route
 XEN_SCRIPTS += network-nat vif-nat
-XEN_SCRIPTS += block-phy
-XEN_SCRIPTS += block-file
+XEN_SCRIPTS += block
 XEN_SCRIPTS += block-enbd
 
 XEN_HOTPLUG_DIR = /etc/hotplug
diff --git a/tools/examples/block b/tools/examples/block
new file mode 100644 (file)
index 0000000..4fec0d6
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+set -e
+
+export PATH=/sbin:/bin:/usr/bin:/usr/sbin:$PATH
+
+expand_dev() {
+  local dev
+  case $1 in
+  /*)
+    dev=$1
+    ;;
+  *)
+    dev=/dev/$1
+    ;;
+  esac
+  echo -n $dev
+}
+
+write_dev() {
+  local major
+  local minor
+  local pdev
+       
+  major=$(stat -L -c %t "$1")
+  minor=$(stat -L -c %T "$1")
+  pdev=$(printf "0x%02x%02x" 0x$major 0x$minor)
+  xenstore-write "$XENBUS_PATH"/physical-device $pdev \
+      "$XENBUS_PATH"/node $1
+}
+
+t=$(xenstore-read "$XENBUS_PATH"/type)
+
+case $1 in 
+  bind)
+    p=$(xenstore-read "$XENBUS_PATH"/params)
+    case $t in 
+      phy)
+        dev=$(expand_dev $p)
+       write_dev "$dev"
+       exit 0
+       ;;
+
+      file)
+       for dev in /dev/loop* ; do
+         echo "dev is $dev, p is $p"
+         if losetup $dev $p; then
+           write_dev "$dev"
+            exit 0
+         fi
+       done
+       exit 1
+       ;;
+
+      *)
+        [ -x /etc/xen/scripts/block-"$t" ] && \
+           /etc/xen/scripts/block-"$t" bind $p
+       ;;
+    esac
+    ;;
+
+  unbind)
+    node=$(xenstore-read "$XENBUS_PATH"/node)
+    case $t in 
+      phy)
+       exit 0
+       ;;
+
+      file)
+       losetup -d $node
+       exit 0
+       ;;
+
+      *)
+        [ -x /etc/xen/scripts/block-"$t" ] && \
+           /etc/xen/scripts/block-"$t" unbind $node
+       ;;
+
+    esac
+    ;;
+
+esac
diff --git a/tools/examples/block-file b/tools/examples/block-file
deleted file mode 100755 (executable)
index 3270fa0..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# Usage: block_loop [bind file|unbind node]
-#
-# The file argument to the bind command is the file we are to bind to a
-# loop device.
-#
-# The node argument to unbind is the name of the device node we are to
-# unbind.
-
-set -e
-
-case $1 in
-  bind)
-    for dev in /dev/loop*; do
-      if losetup $dev $2; then
-        major=$(stat -L -c %t "$dev")
-        minor=$(stat -L -c %T "$dev")
-        pdev=$(printf "0x%02x%02x" 0x$major 0x$minor)
-        xenstore-write "$XENBUS_PATH"/physical-device $pdev \
-          "$XENBUS_PATH"/node $dev
-        exit 0
-      fi
-    done
-    exit 1
-    ;;
-  unbind)
-    losetup -d $2
-    exit 0
-    ;;
-esac
diff --git a/tools/examples/block-phy b/tools/examples/block-phy
deleted file mode 100644 (file)
index a19a861..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/sh
-
-set -e
-
-expand_dev() {
-  local dev
-  case $1 in
-  /*)
-    dev=$1
-    ;;
-  *)
-    dev=/dev/$1
-    ;;
-  esac
-  echo -n $dev
-}
-
-case $1 in
-  bind)
-    dev=$(expand_dev $2)
-    major=$(stat -L -c %t "$dev")
-    minor=$(stat -L -c %T "$dev")
-    pdev=$(printf "0x%02x%02x" 0x$major 0x$minor)
-    xenstore-write "$XENBUS_PATH"/physical-device $pdev \
-        "$XENBUS_PATH"/node $dev
-    exit 0
-    ;;
-  unbind)
-    ;;
-esac
index 91a5d0eb32a0336000e6aa8341e98903e2bd8d28..27af3359bfc952e68fef1481d8a7cbecc19c054b 100755 (executable)
@@ -11,20 +11,14 @@ case "$ACTION" in
   add)
     case "$XENBUS_TYPE" in
       vbd)
-        t=$(xenstore-read "$XENBUS_PATH"/type)
-        params=$(xenstore-read "$XENBUS_PATH"/params)
-        [ -x /etc/xen/scripts/block-"$t" ] && \
-            /etc/xen/scripts/block-"$t" bind $params
+       /etc/xen/scripts/block bind
         ;;
     esac
     ;;
   remove)
     case "$XENBUS_TYPE" in
       vbd)
-        t=$(xenstore-read "$XENBUS_PATH"/type)
-        node=$(xenstore-read "$XENBUS_PATH"/node)
-        [ -x /etc/xen/scripts/block-"$t" ] && \
-            /etc/xen/scripts/block-"$t" unbind $node
+       /etc/xen/scripts/block unbind
         ;;
     esac
     # remove device backend store entries